package com.roc.demo.proxy;

import java.lang.reflect.Proxy;

/**
 * 服务代理工厂，用于创建代理对象
 * todo 动态代理这块，还需要多学习下
 */
public class ServiceProxyFactory {

    /**
     * 根据服务类获取代理对象
     * @param serviceClass
     * @param <T>
     * @return
     */
    public static <T> T getProxy(Class<T> serviceClass){
        return (T) Proxy.newProxyInstance(  //Java 提供的一个静态方法，用于创建动态代理对象
                serviceClass.getClassLoader(),  //获取服务类的类加载器，用于加载代理类
                new Class[]{serviceClass},  //代理类需要实现的接口数组
                new ServiceProxy()); //传入一个 InvocationHandler 实现，这里是 ServiceProxy 类的实例。这个类将定义代理对象的方法调用行为
    }
}
